package com.utils;

import com.google.gson.Gson;
import org.apache.commons.beanutils.BeanUtils;

import java.lang.reflect.Field;
import java.util.Map;

public class WebUtils {
    /**
     * 把Map中的值注入到对应的JavaBean 属性中。
     *
     * @param value
     * @param bean
     */
    public static <T> T copyParamToBean(Map value, T bean) {
        try {
            /**
             * 把所有请求的参数都注入到对象中
             */
            System.out.println("注入前" + bean);
            BeanUtils.populate(bean, value);
            System.out.println("注入后" + bean);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bean;
    }

    /**
     * 将字符串转换成为int 类型的数据
     *
     * @param strInt
     * @param defaultValue
     * @return
     */
    public static int parseInt(String strInt, int defaultValue) {
        try {
            return Integer.parseInt(strInt);
        } catch (Exception e) {
            System.out.println(strInt + "设为默认值：" + defaultValue);
        }
        return defaultValue;
    }

    /**
     * 转换成为Json字符串
     *
     * @param obj
     * @return
     */
    public static String parseJson(Object obj) {
        Gson gson = new Gson();
        return gson.toJson(obj);
    }

    /**
     *
     * @param bean1 被复制的对象
     * @param bean2 接受的对象
     * @return 返回一个复制后的对象
     */
    public static <T> T copyBean(T bean1, T bean2) {
        Class<?> c = bean1.getClass();
        Field[] fields = c.getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            fields[i].setAccessible(true);
            try {
                fields[i].set(bean2,fields[i].get(bean1));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        return bean2;
    }
}
